#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;
uniform float u_time;

/**
 * 主函数，负责计算并输出片段颜色
 * 
 * 该函数通过以下步骤生成最终颜色：
 * 1. 将屏幕坐标转换为标准化坐标
 * 2. 计算基于时间变化的径向距离
 * 3. 根据距离生成RGB颜色值
 * 4. 输出最终片段颜色
 * 
 * 使用的uniform变量：
 * - u_resolution: 屏幕分辨率
 * - u_time: 当前时间（秒）
 * 
 * 返回值：无返回值，直接设置gl_FragColor
 */
void main() {
    // 将屏幕坐标转换为以屏幕中心为原点的标准化坐标系
    vec2 uv = (gl_FragCoord.xy * 2. - u_resolution.xy) / min(u_resolution.x, u_resolution.y);
    
    // 计算到中心点的距离，并加入随时间变化的偏移量
    float r = length(uv) + fract(u_time * 0.2);
    
    // 根据距离计算RGB颜色分量，距离越远颜色越暗
    vec3 color = vec3(max(0.0, 1.0 - r), max(0.0, 1.0 - 2.0 * r), max(0.0, 1.0 - 3.0 * r));
    
    // 设置片段的最终颜色，alpha值固定为1.0
    gl_FragColor = vec4(color, 1.0);
}